package com.greensam.pixelengine.facade;

import com.greensam.pixelengine.pojo.base.DeleteRequest;
import com.greensam.pixelengine.pojo.base.PaginationResponse;
import com.greensam.pixelengine.pojo.vo.space.request.SpaceCreateRequest;
import com.greensam.pixelengine.pojo.vo.space.request.SpaceEditRequest;
import com.greensam.pixelengine.pojo.vo.space.request.SpacePageRequest;
import com.greensam.pixelengine.pojo.vo.space.request.SpaceUpdateRequest;
import com.greensam.pixelengine.pojo.vo.space.response.SpaceLevelVo;
import com.greensam.pixelengine.pojo.vo.space.response.SpaceVo;

import java.util.List;

/**
 * 空间门面服务
 * @author Ma Chengrui
 * @since 2025/8/2 14:23
 */
public interface SpaceFacadeService {

    /**
     * 创建空间
     *
     * @param request 创建空间请求
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/9/12
     */
    Long createSpace(SpaceCreateRequest request, Long userId);

    /**
     * 删除空间
     *
     * @param request 删除请求
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/8/2
     */
    Boolean deleteSpace(DeleteRequest request, Long userId);

    /**
     * 编辑空间信息（用户）
     *
     * @param request 编辑请求
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/9/12
     */
    Boolean editSpace(SpaceEditRequest request, Long userId);

    /**
     * 获取空间信息
     *
     * @param id 空间id
     * @author Ma Chengrui
     * @since 2025/10/31
     */
    SpaceVo getSpaceById(Long id);

    /**
     * 获取空间详情信息
     *
     * @param id 空间id
     * @author Ma Chengrui
     * @since 2025/9/12
     */
    SpaceVo getSpaceDetail(Long id);

    /**
     * 空间管理 - 分页查询空间
     *
     * @param request 空间分页请求
     * @author Ma Chengrui
     * @since 2025/8/2
     */
    PaginationResponse<SpaceVo> pageSpace(SpacePageRequest request);

    /**
     * 空间管理 - 更新空间信息（管理员）
     *
     * @param request 更新请求
     * @param userId  用户id
     * @author Ma Chengrui
     * @since 2025/8/2
     */
    Boolean updateSpace(SpaceUpdateRequest request, Long userId);

    /**
     * 获取空间等级列表
     *
     * @author Ma Chengrui
     * @since 2025/9/15
     */
    List<SpaceLevelVo> listSpaceLevel();

}
